package  ${pro.basePath}.mappers;

import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import ${pro.entityPath}.${bean.entityName};

public interface ${bean.entityName}Mapper {
    /**
     * 软删除(必须有字段isDelete)
     * @param id
     * @return
     */
    int deleteById(${bean.idType} ${bean.idName});

    /**
     * 保存不为空的值
     * @param bean
     * @return
     */
    int insert(${bean.entityName} bean);

    /**
     * 保存 包含空的值（全更新）
     * @param bean
     * @return
     */
    int insertIncludeNull(${bean.entityName} bean);
    /**
     * 根据主键更新不为null的字段
     * @param bean
     * @return
     */
    int updateById(${bean.entityName} bean);

    /**
     * 根据主键更新（全更新！）
     * @param bean
     * @return
     */
    int updateByIdIncludeNull(${bean.entityName} bean);

    ${bean.entityName} queryById(${bean.idType} ${bean.idName});
    List<${bean.entityName}> queryList(@Param("param")Map<String,Object> param);
    Integer queryPageCount(@Param("param")Map<String,Object> param);
    List<${bean.entityName}> queryPage(@Param("param")Map<String,Object> param,@Param("page")Pageable page);
}